package frames;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import persistencia.perControlCambio;
import persistencia.perInconsistencia;
import persistencia.perMovimiento;
import persistencia.perTecnico;
import persistencia.perVehiculo;

import negocio.ControlCambio;
import negocio.Inconsistencia;
import negocio.Movimiento;
import negocio.Tecnico;
import negocio.Vehiculo;
import controlador.Sistema;


public class GenRepFrame extends javax.swing.JFrame {

	private JMenuBar menuBar;
	private JMenu mnAdmV;
	private JMenuItem mnAltaVeh;
	private JMenuItem mnBajaVeh;
	private JMenuItem mnModVeh;
	private JMenu mnAdmT;
	private JMenuItem mnAltaTec;
	private JTextField txtHasta;
	private JLabel jHasta;
	private JRadioButton jRCambios;
	private JRadioButton jRInconsistencia;
	private JTable jTable1;
	private JScrollPane jScrollPane1;
	private JRadioButton jRMovimiento;
	private JRadioButton jRVehiculo;
	private JRadioButton jRTecnico;
	private JButton btnCancelar;
	private JButton btnAceptar;
	private JTextField txtDesde;
	private JLabel jFecha;
	private JMenuItem mnBajaTec;
	private JMenuItem mnModTec;
	private JMenu mnMov;
	private JMenuItem mnRegisMov;	
	private JMenu mnMant;
	private JMenuItem mnGenMant;
	private JMenuItem mnAutMant;
	private JMenuItem mnGenRep;
	private JSeparator sep;	
	private JMenu mnReports;
	private Sistema sist;

	
	public GenRepFrame() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		sist=Sistema.getInstance();
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setBackground(new java.awt.Color(255,255,255));
			this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("mgasbar.png")).getImage());
			getContentPane().setLayout(null);
			this.setTitle("MetroGas");
			{
				jFecha = new JLabel();
				getContentPane().add(jFecha);
				jFecha.setText("Desde: ");
				jFecha.setBounds(19, 135, 71, 23);
			}
			{
				txtDesde = new JTextField();
				txtDesde.setText("YYYY/MM/DD");
				getContentPane().add(txtDesde);
				txtDesde.setBounds(90, 136, 91, 22);
			}
			{
				btnAceptar = new JButton();
				getContentPane().add(btnAceptar);
				btnAceptar.setText("Aceptar");
				btnAceptar.setBounds(12, 249, 93, 26);
			}
			{
				btnCancelar = new JButton();
				getContentPane().add(btnCancelar);
				btnCancelar.setText("Cancelar");
				btnCancelar.setBounds(116, 249, 91, 26);
			}
			{
				jRTecnico = new JRadioButton();
				getContentPane().add(jRTecnico);
				jRTecnico.setText("Tecnico");
				jRTecnico.setBounds(19, 28, 93, 25);
			}
			{
				jRVehiculo = new JRadioButton();
				getContentPane().add(jRVehiculo);
				jRVehiculo.setText("Vehiculo");
				jRVehiculo.setBounds(19, 60, 93, 23);
			}
			{
				jRMovimiento = new JRadioButton();
				getContentPane().add(jRMovimiento);
				jRMovimiento.setText("Movimiento");
				jRMovimiento.setBounds(19, 90, 93, 23);
			}
			{
				jRInconsistencia = new JRadioButton();
				getContentPane().add(jRInconsistencia);
				jRInconsistencia.setText("Inconsistencia");
				jRInconsistencia.setBounds(123, 27, 131, 26);
			}
			{
				jRCambios = new JRadioButton();
				getContentPane().add(jRCambios);
				jRCambios.setText("Cambios");
				jRCambios.setBounds(123, 60, 131, 23);
			}
				ButtonGroup group = new ButtonGroup();
				group.add(jRInconsistencia);
				group.add(jRCambios);
				{
					jHasta = new JLabel();
					getContentPane().add(jHasta);
					jHasta.setText("Hasta:");
					jHasta.setBounds(19, 170, 71, 21);
				}
				{
					txtHasta = new JTextField();
					getContentPane().add(txtHasta);
					txtHasta.setText("YYYY/MM/DD");
					txtHasta.setBounds(90, 171, 91, 20);
				}
				{
					jScrollPane1 = new JScrollPane();
					getContentPane().add(jScrollPane1);
					jScrollPane1.setBounds(265, 22, 404, 281);
					{
						/*TableModel jTable1Model = 
								new DefaultTableModel(
										new String[][] { { "One", "Two" }, { "Three", "Four" } },
										new String[] { "Column 1", "Column 2" });*/
						//jTable1 = new JTable();
						//jScrollPane1.setViewportView(jTable1);
						//jTable1.setModel(jTable1Model);
					}
				}
				group.add(jRVehiculo);
				group.add(jRTecnico);
				group.add(jRMovimiento);
				
				
			this.setSize(540, 353);
			btnCancelar.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent arg0) {
					MenuFrame asd=new MenuFrame();
					dispose();
				}
				
			});	
			btnAceptar.addActionListener(new ActionListener(){

				public void actionPerformed(ActionEvent e) {
					String desde=txtDesde.getText(),hasta=txtHasta.getText();
					
					if(jRInconsistencia.isSelected())
					{
						if(txtDesde.getText().compareTo("YYYY/MM/DD")==0 || txtHasta.getText().compareTo("YYYY/MM/DD")==0)
						{
							JOptionPane.showMessageDialog(null, "Debe agregar rango de fechas", "Error", JOptionPane.WARNING_MESSAGE);
						}else{
							perInconsistencia pt=new perInconsistencia();
							Vector <Inconsistencia>v=pt.select(desde,hasta);
							Object[][] data =  new Object[v.size()][5];
							for(int i=0;i<v.size();i++)
							{
								data[i][0]=v.get(i).getOs();
								data[i][1]=v.get(i).getDescripcion();
								data[i][2]=v.get(i).getMotivo();
								data[i][3]=v.get(i).getNroInconsistencia();
								data[i][4]=v.get(i).getFecha();												
							}				
							String[] columnNames ={ "Orden", "Descripcion","Motivo","Nru","Legajo"};
							TableModel jTable1Model = new DefaultTableModel(data, columnNames);
							jTable1 = new JTable();
							jScrollPane1.setViewportView(jTable1);
							jTable1.setModel(jTable1Model);
						}
					}else if(jRCambios.isSelected())
					{
						if(txtDesde.getText().compareTo("YYYY/MM/DD")==0 || txtHasta.getText().compareTo("YYYY/MM/DD")==0)
						{
							JOptionPane.showMessageDialog(null, "Debe agregar rango de fechas", "Error", JOptionPane.WARNING_MESSAGE);
						}else{
							perControlCambio pt=new perControlCambio();
							Vector <ControlCambio>v=pt.select(desde,hasta);
							Object[][] data =  new Object[v.size()][5];
							for(int i=0;i<v.size();i++)
							{
								data[i][0]=v.get(i).getLogin().getUsuario();
								data[i][1]=v.get(i).getCambio_ant();
								data[i][2]=v.get(i).getCambio_post();
								data[i][3]=String.valueOf(v.get(i).getFecha());
								data[i][4]=v.get(i).getTabla();
							}						
							String[] columnNames ={ "Usuario", "Antes","Despues","Fecha","Tabla"};
							DefaultTableModel  jTable1Model = new DefaultTableModel(data, columnNames);
							jTable1 = new JTable();
							jScrollPane1.setViewportView(jTable1);
							jTable1.setModel(jTable1Model);
						}
					}else if(jRVehiculo.isSelected())
					{
						perVehiculo pt=new perVehiculo();
						Vector <Vehiculo>v=pt.select();
						Object[][] data =  new Object[v.size()][5];
						for(int i=0;i<v.size();i++)
						{
							data[i][0]=v.get(i).getDominio();
							data[i][1]=v.get(i).getSede().getNombre();
							data[i][2]=v.get(i).getSedeAct().getNombre();
							data[i][3]=String.valueOf(v.get(i).isEnViaje());
							data[i][4]=v.get(i).getModelo();														
						}						
						String[] columnNames ={ "Dominio", "Sede","Sede activa","en viaje?","Modelo"};
						DefaultTableModel  jTable1Model = new DefaultTableModel(data, columnNames);
						jTable1 = new JTable();
						jScrollPane1.setViewportView(jTable1);
						jTable1.setModel(jTable1Model);
					}else if(jRTecnico.isSelected())
					{
						perTecnico pt=new perTecnico();
						Vector <Tecnico>v=pt.select();
						Object[][] data =  new Object[v.size()][5];
						for(int i=0;i<v.size();i++)
						{
							data[i][0]=v.get(i).getNombre();
							data[i][1]=v.get(i).getApellido();
							data[i][2]=v.get(i).getDNI();
							data[i][3]=v.get(i).getSede().getNombre();
							data[i][4]=v.get(i).getLegajo();	
							
						}				
						String[] columnNames ={ "Nombre", "Apellido","DNI","Sede","Legajo"};
						TableModel jTable1Model = new DefaultTableModel(data, columnNames);
						jTable1 = new JTable();
						jScrollPane1.setViewportView(jTable1);
						jTable1.setModel(jTable1Model);					
					}else if(jRMovimiento.isSelected())
					{
						if(txtDesde.getText().compareTo("YYYY/MM/DD")==0 || txtHasta.getText().compareTo("YYYY/MM/DD")==0)
						{
							JOptionPane.showMessageDialog(null, "Debe agregar rango de fechas", "Error", JOptionPane.WARNING_MESSAGE);
						}else{
							perMovimiento pt=new perMovimiento();
							Vector <Movimiento>v=pt.select(desde,hasta);
							Object[][] data =  new Object[v.size()][5];
							for(int i=0;i<v.size();i++)
							{
								data[i][0]=v.get(i).getOs();
								data[i][1]=v.get(i).getVehiculo().getDominio();
								data[i][2]=v.get(i).getTecnico().getApellido();
								data[i][3]=v.get(i).getSede().getNombre();
								data[i][4]=v.get(i).getFecha();	
							}				
							String[] columnNames ={ "OS", "Vehiculo","Tecnico","Sede","Fecha"};
							TableModel jTable1Model = new DefaultTableModel(data, columnNames);
							jTable1 = new JTable();
							jScrollPane1.setViewportView(jTable1);
							jTable1.setModel(jTable1Model);	
						}
					}
				}
				
			});
			{
				menuBar = new JMenuBar();
				setJMenuBar(menuBar);
				{
					mnAdmV = new JMenu();
					menuBar.add(mnAdmV);
					mnAdmV.setText("Administrar Vehiculo");
					{
						mnAltaVeh = new JMenuItem();
						mnAdmV.add(mnAltaVeh);
						mnAltaVeh.setText("Alta");
						mnAltaVeh.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									AltaVehiculoFrame a = new AltaVehiculoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
								
								
							}
						});
					}
					{
						sep = new JSeparator();
						mnAdmV.add(sep);
					}
					{
						mnBajaVeh = new JMenuItem();
						mnAdmV.add(mnBajaVeh);
						mnBajaVeh.setText("Baja");
						mnBajaVeh.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									BajaVehiculoFrame a = new BajaVehiculoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
					{
						sep = new JSeparator();
						mnAdmV.add(sep);
					}
					{
						mnModVeh = new JMenuItem();
						mnAdmV.add(mnModVeh);
						mnModVeh.setText("Modificar");
						mnModVeh.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									ModVehiculoFrame a = new ModVehiculoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}					
				}
				{
					mnAdmT = new JMenu();
					menuBar.add(mnAdmT);
					mnAdmT.setText("Administrar Tecnico");
					{
						mnAltaTec = new JMenuItem();
						mnAdmT.add(mnAltaTec);
						mnAltaTec.setText("Alta");
						mnAltaTec.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									AltaTecnicoFrame a = new AltaTecnicoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
					{
						sep = new JSeparator();
						mnAdmT.add(sep);
					}
					{
						mnBajaTec = new JMenuItem();
						mnAdmT.add(mnBajaTec);
						mnBajaTec.setText("Baja");
						mnBajaTec.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								

								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									BajaTecnicoFrame a = new BajaTecnicoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
					{
						sep = new JSeparator();
						mnAdmT.add(sep);
					}
					{
						mnModTec = new JMenuItem();
						mnAdmT.add(mnModTec);
						mnModTec.setText("Modificar");
						mnModTec.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									ModTecnicoFrame a = new ModTecnicoFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
				}
				{
					mnMov = new JMenu();
					menuBar.add(mnMov);
					mnMov.setText("Movimientos");
					{
						mnRegisMov = new JMenuItem();
						mnMov.add(mnRegisMov);
						mnRegisMov.setText("Registrar");
						mnRegisMov.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									RegisMovFrame a = new RegisMovFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
								
							}
						});
					}
				}
				{
					mnMant = new JMenu();
					menuBar.add(mnMant);
					mnMant.setText("Mantenimiento");
					{
						mnGenMant = new JMenuItem();
						mnMant.add(mnGenMant);
						mnGenMant.setText("Generar");
						mnGenMant.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									GenMantFrame a = new GenMantFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
					{
						sep = new JSeparator();
						mnMant.add(sep);
					}
					{
						mnAutMant = new JMenuItem();
						mnMant.add(mnAutMant);
						mnAutMant.setText("Autorizar");
						mnAutMant.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO")
										|| sist.getLogins().getTipoUsuario().equals("AUDITORIA"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									AutMantFrame a = new AutMantFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
				}
				{
					mnReports = new JMenu();
					menuBar.add(mnReports);
					mnReports.setText("Reportes");
					{
						mnGenRep = new JMenuItem();
						mnReports.add(mnGenRep);
						mnGenRep.setText("Generar");
						mnGenRep.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								
								if(sist.getLogins().getTipoUsuario().equals("GUARDIA") || sist.getLogins().getTipoUsuario().equals("TECNICO"))
								{
									Container d=getContentPane();
									JOptionPane.showMessageDialog(d,"No tiene acceso","Error",JOptionPane.ERROR_MESSAGE);
								}else
								{
									GenRepFrame a = new GenRepFrame();
									a.setLocationRelativeTo(null);
									dispose();
								}
							}
						});
					}
				}
			}
			setVisible(true);
			this.setSize(700, 400);
		}catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
}
